#include "configdialog.h"
#include "ui_configdialog.h"

#include <QMessageBox>

ConfigDialog::ConfigDialog(QWidget *parent) :
    QDialog(parent),
    conf(new Ui::ConfigDialog)
{
    conf->setupUi(this);
}

ConfigDialog::~ConfigDialog()
{
    delete conf;
}

Ui::ConfigDialog* ConfigDialog::getUi(){
    return conf;
}

void ConfigDialog::on_buttonBox_accepted()
{
    QMessageBox messageBox;
    if(conf->area1TextEdit->toPlainText().toDouble()>0.0&&conf->area1TextEdit->toPlainText().toDouble()<=10.0){
        areaWt1 = conf->area1TextEdit->toPlainText().toDouble();
    }
    else{
        messageBox.critical(0,"Dado Incorreto","O campo área está incorreto. Área 1 é um dado do tipo flutuante entre 0 e 10.");
        messageBox.setFixedSize(500,200);
    }
    if(conf->area2TextEdit->toPlainText().toDouble()>0&&conf->area2TextEdit->toPlainText().toDouble()<=10.0){
        areaWt2 = conf->area2TextEdit->toPlainText().toDouble();
        //ctrl->Control_GetWaterTank(2)->WaterTank_SetArea(conf->area2TextEdit->toPlainText().toDouble());
    }
    else{
        messageBox.critical(0,"Dado Incorreto","O campo área está incorreto. Área 2 é um dado do tipo flutuante entre 0 e 10.");
        messageBox.setFixedSize(500,200);
    }
    if(conf->gaugeIn1TextEdit->toPlainText().toDouble()>0&&conf->gaugeIn1TextEdit->toPlainText().toDouble()<=10){
        gaugeInWt1 = conf->gaugeIn1TextEdit->toPlainText().toDouble();
    }
    else{
        messageBox.critical(0,"Dado Incorreto","O campo diâmetro está incorreto. Diâmetro de entrada 1 é um dado do tipo flutuante entre 0 e 10.");
        messageBox.setFixedSize(500,200);
    }
    if(conf->gaugeIn2TextEdit->toPlainText().toDouble()>0&&conf->gaugeIn2TextEdit->toPlainText().toDouble()<=10){
        gaugeInWt2 = conf->gaugeIn2TextEdit->toPlainText().toDouble();
    }
    else{
        messageBox.critical(0,"Dado Incorreto","O campo diâmetro está incorreto. Diâmetro de entrada 2 é um dado do tipo flutuante entre 0 e 10.");
        messageBox.setFixedSize(500,200);
    }
    if(conf->gaugeOut1TextEdit->toPlainText().toDouble()>0&&conf->gaugeOut1TextEdit->toPlainText().toDouble()<=10){
        gaugeOutWt1 =  conf->gaugeOut1TextEdit->toPlainText().toDouble();
    }
    else{
        messageBox.critical(0,"Dado Incorreto","O campo diâmetro está incorreto. Diâmetro de saída 1 é um dado do tipo flutuante entre 0 e 10.");
        messageBox.setFixedSize(500,200);
    }
    if(conf->gaugeOut2TextEdit->toPlainText().toDouble()>0&&conf->gaugeOut2TextEdit->toPlainText().toDouble()<=10){
        gaugeOutWt2 =  conf->gaugeOut2TextEdit->toPlainText().toDouble();
    }
    else{
        messageBox.critical(0,"Dado Incorreto","O campo diâmetro está incorreto. Diâmetro de saída 2 é um dado do tipo flutuante entre 0 e 10.");
        messageBox.setFixedSize(500,200);
    }
    if(conf->height1TextEdit->toPlainText().toDouble()>0&&conf->height1TextEdit->toPlainText().toDouble()<=150){
        heightWt1 = conf->height1TextEdit->toPlainText().toDouble();
    }
    else{
        messageBox.critical(0,"Dado Incorreto","O campo altura está incorreto. Altura 1 é um dado do tipo flutuante entre 0 e 150.");
        messageBox.setFixedSize(500,200);
    }
    if(conf->height2TextEdit->toPlainText().toDouble()>0&&conf->height2TextEdit->toPlainText().toDouble()<=150){
        heightWt2 = conf->height2TextEdit->toPlainText().toDouble();
    }
    else{
        messageBox.critical(0,"Dado Incorreto","O campo altura está incorreto. Altura 2 é um dado do tipo flutuante entre 0 e 150.");
        messageBox.setFixedSize(500,200);
    }
    if(conf->level1TextEdit->toPlainText().toDouble()>0&&conf->level1TextEdit->toPlainText().toDouble()<=heightWt1){
        inicialLevel1 =  conf->level1TextEdit->toPlainText().toDouble();
    }
    else{
        messageBox.critical(0,"Dado Incorreto","O campo nível está incorreto. Nível inicial 1 é um dado do tipo flutuante entre 0 e a altura 1 definida.");
        messageBox.setFixedSize(500,200);
    }
    if(conf->level2TextEdit->toPlainText().toDouble()>0&&conf->level2TextEdit->toPlainText().toDouble()<=heightWt2){
        inicialLevel2 =  conf->level2TextEdit->toPlainText().toDouble();
    }
    else{
        messageBox.critical(0,"Dado Incorreto","O campo nível está incorreto. Nível inicial 2 é um dado do tipo flutuante entre 0 e a altura 2 definida.");
        messageBox.setFixedSize(500,200);
    }
    if(conf->pumpTextEdit->toPlainText().toDouble()>0&&conf->pumpTextEdit->toPlainText().toDouble()<20){
        pumpOutput =  conf->pumpTextEdit->toPlainText().toDouble();
    }
    else{
        messageBox.critical(0,"Dado Incorreto","O campo vazão da bomba está incorreto. Vazão da bomba é um dado do tipo flutuante entre 0 e 20.");
        messageBox.setFixedSize(500,200);
    }
    if(conf->timeTap1TextEdit->toPlainText().toInt()>0){
        timeToClearWt1 =  conf->timeTap1TextEdit->toPlainText().toInt();
    }
    else{
        messageBox.critical(0,"Dado Incorreto","O campo tempo está incorreto. Tempo 1 é um dado do tipo inteiro maior que 0.");
        messageBox.setFixedSize(500,200);
    }
    if(conf->timeTap2TextEdit->toPlainText().toInt()>0){
        timeToClearWt2 =  conf->timeTap2TextEdit->toPlainText().toInt();
    }
    else{
        messageBox.critical(0,"Dado Incorreto","O campo tempo está incorreto. Tempo 2 é um dado do tipo inteiro maior que 0.");
        messageBox.setFixedSize(500,200);
    }
    confirmation = true;
}

void ConfigDialog::on_buttonBox_rejected()
{
    confirmation = false;
}
